//
// Created by 邹嘉旭 on 2025/8/8.
//


#ifndef INTERFACE_DEFINE_H
#define INTERFACE_DEFINE_H

#include "elements/elements.h"

/**
* 信令定义
**/
typedef struct cn_format_desc_s {
    uint32_t type; // 信令类型
    struct_desc_t *f_desc; // 结构描述
    const char *tag;
    size_t struct_size; // 结构大小
    size_t desc_size; // 结构描述大小

    l_err (*send_handler)(net_element_t *net_ele, void *data, struct cn_format_desc_s *send_desc, element_propt_t *propt, interface_type_t intf_type); // 发送处理函数
    l_err (*recv_handler)(net_element_t *, struct cn_format_desc_s *, buffer_t *, element_propt_t *); // 接收处理函数, port表示据从哪个端口发来的
    l_err (*forward_handler)(net_element_t *net_ele, buffer_t *buf, element_propt_t *propt, interface_type_t intf_type); // 转发处理函数

    void (*free_func)(void *); // 释放函数
} cn_format_desc_t;

cn_format_desc_t *get_non_sequential_desc(size_t format_size, cn_format_desc_t *descs, uint64_t target_type);



#endif